# -*- coding: utf-8 -*-
"""
Created on Sun Mar 12 08:28:26 2023

@author: forla
"""

import abc
import tensorflow as tf


class MPCNN_Model(tf.keras.Model):
    
    
    def __init__(self, input_shape: int = 9, num_classes: int = 27, *args, **kwargs):
        inp, out = self.create_model_io(input_shape, num_classes)
        kwargs = {**kwargs, **{"inputs": inp, "outputs": out}}
        super().__init__(*args, **kwargs)

    @abc.abstractmethod
    def create_model_io(self, input_shape: int = 9, num_classes: int = 27):
        pass

    def call(self, inputs, training=None, mask=None):
        return super(MPCNN_Model, self).call(inputs, training=training, mask=mask)

    def get_config(self):
        return super(MPCNN_Model, self).get_config()
    

